Serial Peripheral Interface (SPI) support(spi.h)
シリアルペリフェラルインターフェイス(SPI)のサポート
概要
シリアルペリフェラルインターフェイス(SPI)のサポート。
現在、レジスタのビット定義を超えたI2Sサポートはありません。
データ型
■ struct spi_reg_map
SPIレジスタ・マップ型
パブリックメンバー
__IO uint32 CR1 制御レジスタ 1 (SPI_CR1)
__IO uint32 CR2 制御レジスタ 2 (SPI_CR2)
__IO uint32 SR ステータスレジスタ (SPI_SR)
__IO uint32 DR データレジスタ (SPI_DR)
__IO uint32 CRCPR CRC 多項式レジスタ (SPI_CRCPR)
__IO uint32 RXCRCR 受信用 CRC レジスタ (SPI_RXCRCR)
__IO uint32 TXCRCR 送信用 CRC レジスタ (SPI_TXCRCR)
__IO uint32 I2SCFGR I2S 設定レジスタ
__IO uint32 I2SPR I2S プリスケーラレジスタ
■ struct spi_dev
SPIデバイス型
パブリックメンバー
spi_reg_map *regs レジスタ・マップ
rcc_clk_id clk_id RCCクロック情報
nvic_irq_num irq_num NVIC割り込み番号
■ spi_mode 列挙型
クロックラインのアイドル状態を決定するクロック極性(CPOL)と、データキャプチャをトリガするクロックエッジを決定するクロック位相(CPHA)の組み合わせを決定します。
SPI_MODE_LOW_RISING = 0 クロック アイドル LOW、立上エッジデータキャプチャ(最初遷移)
SPI_MODE_LOW_FALLING = 1 クロック アイドル LOW、立下エッジデータキャプチャ(第2遷移)
SPI_MODE_HIGH_FALLING = 2 クロック アイドル HIGH、立下エッジデータキャプチャ(最初遷移)
SPI_MODE_HIGH_RISING = 3 クロック アイドル HIGH、立上エッジデータキャプチャ(最初遷移)
SPI_MODE_0 = SPI_MODE_LOW_RISING SPI_MODE_LOW_RISING と同じ
SPI_MODE_1 = SPI_MODE_LOW_FALLING SPI_MODE_LOW_FALLING と同じ
SPI_MODE_2 = SPI_MODE_HIGH_FALLING SPI_MODE_HIGH_FALLING と同じ
SPI_MODE_3 = SPI_MODE_HIGH_RISING SPI_MODE_HIGH_RISING と同じ
■ spi_baud_rate 列挙型
f_PCLKの除数としてのSPIボーレート設定、PCLKクロック周波数。
SPI_BAUD_PCLK_DIV_2 = SPI_CR1_BR_PCLK_DIV_2 f_PCLK/2
SPI_BAUD_PCLK_DIV_4 = SPI_CR1_BR_PCLK_DIV_4 f_PCLK/4
SPI_BAUD_PCLK_DIV_8 = SPI_CR1_BR_PCLK_DIV_8 f_PCLK/8
SPI_BAUD_PCLK_DIV_16 = SPI_CR1_BR_PCLK_DIV_16 f_PCLK/16
SPI_BAUD_PCLK_DIV_32 = SPI_CR1_BR_PCLK_DIV_32 f_PCLK/32
SPI_BAUD_PCLK_DIV_64 = SPI_CR1_BR_PCLK_DIV_64 f_PCLK/64
SPI_BAUD_PCLK_DIV_128 = SPI_CR1_BR_PCLK_DIV_128 f_PCLK/128
SPI_BAUD_PCLK_DIV_256 = SPI_CR1_BR_PCLK_DIV_256 f_PCLK/256
■ spi_cfg_flag 列挙型
SPI初期化フラグ
参照:spi_master_enable()、spi_slave_enable()
SPI_BIDIMODE = SPI_CR1_BIDIMODE 双方向データモードイネーブル
SPI_BIDIOE = SPI_CR1_BIDIOE 双方向モードでの出力イネーブル
SPI_CRCEN = SPI_CR1_CRCEN ハードウェア CRC 計算イネーブル
SPI_DFF_8_BIT = SPI_CR1_DFF_8_BIT 8ビットのデータフレームフォーマット(デフォルト)
SPI_DFF_16_BIT = SPI_CR1_DFF_16_BIT 16ビットデータフレームフォーマット
SPI_RX_ONLY = SPI_CR1_RXONLY 受信専用
SPI_SW_SLAVE = SPI_CR1_SSM ソフトウェアスレーブ管理
SPI_SOFT_SS = SPI_CR1_SSI 内部スレーブ選択(SPI_SW_SLAVEと組合せ使用時のみ有効)
SPI_FRAME_LSB = SPI_CR1_LSBFIRST フレームフォーマット:LSB-が最初に送信
SPI_FRAME_MSB = 0 フレームフォーマット:MSB が最初に送信 (デフォルト)
■ spi_interrupt 列挙型
使用可能なSPI割り込み
SPI_TXE_INTERRUPT = SPI_CR2_TXEIE 送信バッファエンプティ割り込み
SPI_RXNE_INTERRUPT = SPI_CR2_RXNEIE 受信バッファノットエンプティ割り込み
SPI_ERR_INTERRUPT = SPI_CR2_ERRIE エラー割り込み(SPI 時:CRCERR、OVR、MODF 。I2S時: UDR、OVR)
デバイス
■ spi_dev *SPI1 SPI デバイス 1
■ spi_dev *SPI2 SPI デバイス 2
■ spi_dev *SPI3 SPI デバイス 3
API関数
■ void spi_init(spi_dev *dev)
SPIデバイスを初期化してリセットします。
引数
dev :初期化・リセットするSPIデバイス
■ void spi_config_gpios( spi_dev *dev, uint8 as_master, struct gpio_dev *nss_dev, uint8 nss_bit,
struct gpio_dev *comm_dev, uint8 sck_bit, uint8 miso_bit, uint8 mosi_bit)
SPIポートのピンとして使用するためのGPIOビット・モードを構成します。
引数
dev :SPIデバイス
as_master :trueの場合はバスマスタ、 falseの場合スレーブとして設定します。
nss_dev :NSSピンのGPIOデバイス
nss_bit :nss_devのNSSピンのGPIOビット
comm_dev :SCK、MISO、MOSIピンのGPIOデバイス
sck_bit :comm_devのSCKピンのGPIOビット
miso_bit :comm_devのMISOピンのGPIOビット
mosi_bit :comm_devのMOSIピンのGPIOビット
■ void spi_gpio_cfg(uint8 as_master, struct gpio_dev *nss_dev, uint8 nss_bit, struct gpio_dev *comm_dev,
uint8 sck_bit, uint8 miso_bit, uint8 mosi_bit)
SPIポートのピンとして使用するためのGPIOビット・モードを構成します。
※本関数に利用は、推奨されていません。 代わりにspi_config_gpios()を使用してください。
我々(=maple開発)は、この関数が書かれた後に、スタイルをグローバルに foo_config_gpios() 切り替え、常にfoo_dev *引数を取った(最後のビットが重要な部分です)。しかし、spi_config_gpios()はF1のspi_dev *を無視するだけなので、これまでのコードでもこれを保持することができます。
引数
as_master :trueの場合はバスマスタ、 falseの場合スレーブとして設定します。
nss_dev :NSSピンのGPIOデバイス
nss_bit :nss_devのNSSピンのGPIOビット
comm_dev :SCK、MISO、MOSIピンのGPIOデバイス
sck_bit :comm_devのSCKピンのGPIOビット
miso_bit :comm_devのMISOピンのGPIOビット
mosi_bit :comm_devのMOSIピンのGPIOビット
■ void spi_master_enable(spi_dev *dev, spi_baud_rate baud, spi_mode mode, uint32 flags)
SPIデバイスをバスマスタとして設定して有効にします。
デバイスの周辺機器は、再設定する前に無効になります。
引数
dev :バスマスタとして設定するデバイス
baud :バスボーレート
mode :SPIモード
flags :spi_cfg_flag値の論理和(spi_cfg_flag列挙型を参照のこと)
■ void spi_slave_enable(spi_dev *dev, spi_mode mode, uint32 flags)
SPIデバイスをバススレーブとして設定して有効にします。
デバイスの周辺機器は、再設定する前に無効になります。
引数
dev :バススレーブとして構成するデバイス
mode :SPIモード
flags :spi_cfg_flag値の論理和(spi_cfg_flag列挙型を参照のこと)
■ uint32 spi_tx(spi_dev *dev, const void *buf, uint32 len)
ノンブロッキングSPI送信を行います。
bufの要素のサイズは、devのデータフレームフォーマットから推測されます。
つまり、8ビットまたは16ビットの量として正しく扱われます。
引数
dev :送信に使用するSPIポート
buf :送信するバッファ
len :送信する要素の最大数。
戻り値
送信された要素の数。
■ void spi_foreach(void (*fn)(spi_dev*))
各SPIポートで関数を呼び出します。
引数
fn :呼び出す関数
■ void spi_peripheral_enable(spi_dev *dev)
SPIペリフェラルを有効にします。
引数
dev :有効にするデバイス
■ void spi_peripheral_disable(spi_dev *dev)
SPIペリフェラルを無効にします。
引数
dev :無効にするデバイス
■ void spi_peripheral_disable_all(void)
すべてのSPI周辺機器を無効にします。
■ void spi_tx_dma_enable(spi_dev *dev)
送信バッファが空のときは必ずDMA要求を有効にします。
引数
dev :TX DMA要求を有効にするSPIデバイス
■ void spi_tx_dma_disable(spi_dev *dev)
送信バッファが空のときは必ずDMA要求を無効にします。
引数
dev :TX DMA要求を無効にするSPIデバイス
■ void spi_rx_dma_enable(spi_dev *dev)
受信バッファが空のときは必ずDMA要求を有効にします。
引数
dev :RX DMA要求を有効にするSPIデバイス
■ void spi_rx_dma_disable(spi_dev *dev)
受信バッファが空のときは常にDMA要求を無効にします。
引数
dev :RX DMA要求を無効にするSPIデバイス
■ uint8 spi_is_enabled(spi_dev *dev)
SPIペリフェラルが有効になっているかどうかを判断します。
引数
dev :SPIデバイス
戻り値
devの周辺機器が有効の場合はtrue、そうでない場合はfalse を返します。
■ void spi_irq_enable(spi_dev *dev, uint32 interrupt_flags)
SPI割り込み要求を有効にします。
引数
dev :SPIデバイス
interrupt_flags :有効にするspi_interrupt値のビット単位のOR(spi_interrupt列挙型を参照のこと)
■ void spi_irq_disable(spi_dev * dev、uint32 interrupt_flags)
SPI割り込み要求を無効にする。
引数
dev :SPIデバイス
interrupt_flags :無効にするspi_interrupt値のビット単位のOR(spi_interrupt列挙型を参照のこと)
■ spi_cfg_flag spi_dff (spi_dev *dev)
SPIポートが設定されているデータフレームフォーマットフラグを取得します。
引数
dev :取得するデータフレームフォーマットのSPIデバイス
戻り値
devに8ビットのデータフレームフォーマットがある場合はSPI_DFF_8_BIT、そうでなければSPI_DFF_16_BITを返します。
■ uint8 spi_is_rx_nonempty(spi_dev * dev)
デバイスの周辺受信(RX)レジスタが空であるかどうかを確認します。
引数
dev : SPIデバイス
戻り値
devのRXレジスタが空の場合はtrueを返します。そうでなければfalseを返します。
■ uint16 spi_rx_reg(spi_dev * dev)
デバイスの周辺受信(RX)レジスタの内容を取得します。
RXレジスタが空でない場合にのみこの関数を呼び出すことができます。
この関数を呼び出すと、RXレジスタの内容がクリアされます。
引数
dev : SPIデバイス
戻り値
devの周辺RXレジスタの内容
spi_is_rx_reg_nonempty()も参照のこと
■ uint8 spi_is_tx_empty(spi_dev * dev)
デバイスの周辺送信(TX)レジスタが空であるかどうかを決定します。
引数
dev : SPIデバイス
戻り値
devのBSYフラグが設定されている場合はtrue、そうでない場合falseを返します。
■ void spi_tx_reg(spi_dev * dev、uint16 val)
デバイスの周辺送信(TX)レジスタに値をロードします。
この関数は、TXレジスタが空の場合にのみ呼び出すことができます。この関数を呼び出すと、周辺機器のTXレジスタにvalがロードされます。デバイスが適切に構成されている場合、これにより送信が開始され、完了するとTXレジスタが再び空になります。
引数
dev : SPIデバイス
val : TXレジスタにロードする値。SPIデータフレームフォーマットが8ビットの場合、値は右揃えにします。
参照:spi_is_tx_reg_empty()、spi_init()、spi_master_enable()、spi_slave_enable()
uint8 spi_is_busy(spi_dev * dev)
デバイスのペリフェラルビジー(SPI_SR_BSY)フラグが設定されているかどうかを確認します。
引数
dev : SPIデバイス
戻り値
devのBSYフラグが設定されていればtrue、そうでなければfalseを返します。
レジスタマップベースポインタ
SPI1_BASE ((struct spi_reg_map*)0x40013000) SPI1レジスタ・マップ・ベース・ポインタ
SPI2_BASE ((struct spi_reg_map*)0x40003800) SPI2レジスタ・マップ・ベース・ポインタ
SPI3_BASE ((struct spi_reg_map*)0x40003C00) SPI3レジスタ・マップ・ベース・ポインタ
レジスタのビット定義
制御レジスタ1(CR1)
ビット番号
SPI_CR1_BIDIMODE_BIT [15] (rw) BIDIMODE: 双方向データモードイネーブル
SPI_CR1_BIDIOE_BIT [14] (rw) BIDIOE:双方向モードでの出力イネーブル
SPI_CR1_CRCEN_BIT [13] (rw) CRCEN:ハードウェア CRC 計算イネーブル
SPI_CR1_CRCNEXT_BIT [12] (rw) CRCNEXT:CRC 送信指示
SPI_CR1_DFF_BIT [11] (rw) DFF:データフレームフォーマット
SPI_CR1_RXONLY_BIT [10] (rw) RXONLY:受信専用
SPI_CR1_SSM_BIT [9] (rw) SSM:ソフトウェアスレーブ管理
SPI_CR1_SSI_BIT [8] (rw) SSI:内部スレーブ選択
SPI_CR1_LSBFIRST_BIT [7] (rw) LSBFIRST: フレームフォーマット
SPI_CR1_SPE_BIT [6] (rw) SPE:SPI イネーブル
SPI_CR1_MSTR_BIT [2] (rw) MSTR:マスタ選択
SPI_CR1_CPOL_BIT [1] (rw) CPOL:クロック極性
SPI_CR1_CPHA_BIT [0] (rw) CPHA:クロック位相
設定値・ビットマスク
SPI_CR1_BIDIMODE (1U << SPI_CR1_BIDIMODE_BIT) BIDIMODE: 双方向データモードイネーブル
SPI_CR1_BIDIMODE_2_LINE (0x0 << SPI_CR1_BIDIMODE_BIT) 双方向データモード: 2線単方向データモードを選択
SPI_CR1_BIDIMODE_1_LINE (0x1 << SPI_CR1_BIDIMODE_BIT) 双方向データモード: 1 線双方向データモードを選択
SPI_CR1_BIDIOE (1U << SPI_CR1_BIDIOE_BIT) BIDIOE:双方向モードでの出力イネーブル
SPI_CR1_CRCEN (1U << SPI_CR1_CRCEN_BIT) CRCEN:ハードウェア CRC 計算イネーブル
SPI_CR1_CRCNEXT (1U << SPI_CR1_CRCNEXT_BIT) CRCNEXT:CRC 送信指示
SPI_CR1_DFF (1U << SPI_CR1_DFF_BIT) DFF:データフレームフォーマット
SPI_CR1_DFF_8_BIT (0x0 << SPI_CR1_DFF_BIT) 8 ビットデータフレームフォーマット選択
SPI_CR1_DFF_16_BIT (0x1 << SPI_CR1_DFF_BIT) 16ビットデータフレームフォーマット選択
SPI_CR1_RXONLY (1U << SPI_CR1_RXONLY_BIT) RXONLY:受信専用
SPI_CR1_SSM (1U << SPI_CR1_SSM_BIT) SSM:ソフトウェアスレーブ管理
SPI_CR1_SSI (1U << SPI_CR1_SSI_BIT) SSI:内部スレーブ選択
SPI_CR1_LSBFIRST (1U << SPI_CR1_LSBFIRST_BIT) LSBFIRST: フレームフォーマット
SPI_CR1_SPE (1U << SPI_CR1_SPE_BIT) SPE:SPI イネーブル
SPI_CR1_BR (0x7 << 3) BR[2:0]:ボーレート制御
SPI_CR1_BR_PCLK_DIV_2 (0x0 << 3) ボーレート制御:000:fPCLK/2
SPI_CR1_BR_PCLK_DIV_4 (0x1 << 3) ボーレート制御:001:fPCLK/4
SPI_CR1_BR_PCLK_DIV_8 (0x2 << 3) ボーレート制御:010:fPCLK/8
SPI_CR1_BR_PCLK_DIV_16 (0x3 << 3) ボーレート制御:011:fPCLK/16
SPI_CR1_BR_PCLK_DIV_32 (0x4 << 3) ボーレート制御:100:fPCLK/32
SPI_CR1_BR_PCLK_DIV_64 (0x5 << 3) ボーレート制御:101:fPCLK/64
SPI_CR1_BR_PCLK_DIV_128 (0x6 << 3) ボーレート制御:110:fPCLK/128
SPI_CR1_BR_PCLK_DIV_256 (0x7 << 3) ボーレート制御:111:fPCLK/256
SPI_CR1_MSTR (1U << SPI_CR1_MSTR_BIT) MSTR:マスタ選択
SPI_CR1_CPOL (1U << SPI_CR1_CPOL_BIT) CPOL:クロック極性
SPI_CR1_CPOL_LOW (0x0 << SPI_CR1_CPOL_BIT) クロック極性:アイドル時に 0 に CK
SPI_CR1_CPOL_HIGH (0x1 << SPI_CR1_CPOL_BIT) クロック極性:アイドル時に 1 に CK
SPI_CR1_CPHA (1U << SPI_CR1_CPHA_BIT) CPHA:クロック位相
制御レジスタ2(CR2)
ビット番号
SPI_CR2_TXEIE_BIT [7] (rw) TXEIE:送信バッファエンプティ割り込みイネーブル
SPI_CR2_RXNEIE_BIT [6] (rw) RXNEIE:受信バッファノットエンプティ割り込みイネーブル
SPI_CR2_ERRIE_BIT [5] (rw) ERRIE:エラー割り込みイネーブル
SPI_CR2_SSOE_BIT [2] (rw) SSOE:SS 出力イネーブル
SPI_CR2_TXDMAEN_BIT [1] (rw) TXDMAEN:送信バッファ DMA イネーブル
SPI_CR2_RXDMAEN_BIT [0] (rw) RXDMAEN:受信バッファ DMA イネーブル
設定値・ビットマスク
SPI_CR2_TXEIE (1U << SPI_CR2_TXEIE_BIT) TXEIE:送信バッファエンプティ割り込みイネーブル
SPI_CR2_RXNEIE (1U << SPI_CR2_RXNEIE_BIT) RXNEIE:受信バッファノットエンプティ割り込みイネーブル
SPI_CR2_ERRIE (1U << SPI_CR2_ERRIE_BIT) ERRIE:エラー割り込みイネーブル
SPI_CR2_SSOE (1U << SPI_CR2_SSOE_BIT) SSOE:SS 出力イネーブル
SPI_CR2_TXDMAEN (1U << SPI_CR2_TXDMAEN_BIT) TXDMAEN:送信バッファ DMA イネーブル
SPI_CR2_RXDMAEN (1U << SPI_CR2_RXDMAEN_BIT) RXDMAEN:受信バッファ DMA イネーブル
ステータスレジスタ(SR)
ビット番号
SPI_SR_BSY_BIT [7] (r) BSY: ビジーフラグ
SPI_SR_OVR_BIT [6] (r) OVR:オーバーランフラグ
SPI_SR_MODF_BIT [5] (r) MODF:モードフォールト
SPI_SR_CRCERR_BIT [4] (c_w0) CRCERR:CRC エラーフラグ
SPI_SR_UDR_BIT [3] (r) UDR:アンダーランフラグ
SPI_SR_CHSIDE_BIT [2] (r) CHSIDE:チャネルサイド
SPI_SR_TXE_BIT [1] (r) TXE:送信バッファエンプティ
SPI_SR_RXNE_BIT [0] (r) RXNE:受信バッファノットエンプティ
設定値・ビットマスク
SPI_SR_BSY (1U << SPI_SR_BSY_BIT) BSY: ビジーフラグ
SPI_SR_OVR (1U << SPI_SR_OVR_BIT) OVR:オーバーランフラグ
SPI_SR_MODF (1U << SPI_SR_MODF_BIT) MODF:モードフォールト
SPI_SR_CRCERR (1U << SPI_SR_CRCERR_BIT) CRCERR:CRC エラーフラグ
SPI_SR_UDR (1U << SPI_SR_UDR_BIT) UDR:アンダーランフラグ
SPI_SR_CHSIDE (1U << SPI_SR_CHSIDE_BIT) CHSIDE:チャネルサイド
SPI_SR_CHSIDE_LEFT (0x0 << SPI_SR_CHSIDE_BIT) 左チャネル送信する必要があるか、または受信が行われた。
SPI_SR_CHSIDE_RIGHT (0x1 << SPI_SR_CHSIDE_BIT) 右チャネル送信する必要があるか、または受信が行われた。
SPI_SR_TXE (1U << SPI_SR_TXE_BIT) TXE:送信バッファエンプティ
SPI_SR_RXNE (1U << SPI_SR_RXNE_BIT) RXNE:受信バッファノットエンプティ
SPI・I2S 設定レジスタ(SPI_I2SCFGR)
ビット番号
SPI_I2SCFGR_I2SMOD_BIT [11] (rw) I2SMOD:I2S モード選択
SPI_I2SCFGR_I2SE_BIT [10] (rw) I2SE:I2S イネーブル
SPI_I2SCFGR_PCMSYNC_BIT [7] (rw) PCMSYNC:PCM フレーム同期
SPI_I2SCFGR_CKPOL_BIT [3] (rw) CKPOL:定常状態クロック極性
SPI_I2SCFGR_CHLEN_BIT [0] (rw) CHLEN:チャネル長(オーディオチャネルごとのビット数)
設定値・ビットマスク
SPI_I2SCFGR_I2SMOD (1U << SPI_I2SCFGR_I2SMOD_BIT) I2SMOD:I2S モード選択
SPI_I2SCFGR_I2SMOD_SPI (0x0 << SPI_I2SCFGR_I2SMOD_BIT) 0:SPI モードが選択されます
SPI_I2SCFGR_I2SMOD_I2S (0x1 << SPI_I2SCFGR_I2SMOD_BIT) 1:I2S モードが選択されます
SPI_I2SCFGR_I2SE (1U << SPI_I2SCFGR_I2SE_BIT) I2SE:I2S イネーブル
SPI_I2SCFGR_I2SCFG (0x3 << 8) I2SCFG:I2S 設定モード
SPI_I2SCFGR_I2SCFG_SLAVE_TX (0x0 << 8) 00:スレーブ - 送信
SPI_I2SCFGR_I2SCFG_SLAVE_RX (0x1 << 8) 01:スレーブ - 受信
SPI_I2SCFGR_I2SCFG_MASTER_TX (0x2 << 8) 10:マスタ - 送信
SPI_I2SCFGR_I2SCFG_MASTER_RX (0x3 << 8) 11:マスタ - 受信
SPI_I2SCFGR_PCMSYNC (1U << SPI_I2SCFGR_PCMSYNC_BIT) PCMSYNC:PCM フレーム同期
SPI_I2SCFGR_PCMSYNC_SHORT (0x0 << SPI_I2SCFGR_PCMSYNC_BIT) 0:ショートフレーム同期
SPI_I2SCFGR_PCMSYNC_LONG (0x1 << SPI_I2SCFGR_PCMSYNC_BIT) 1:ロングフレーム同期
SPI_I2SCFGR_I2SSTD (0x3 << 4) I2SSTD:I2S 規格選択
SPI_I2SCFGR_I2SSTD_PHILLIPS (0x0 << 4) I2S 規格選択 00:I2S フィリップス規格
SPI_I2SCFGR_I2SSTD_MSB (0x1 << 4) I2S 規格選択 01:MSB 詰め規格(左詰め)
SPI_I2SCFGR_I2SSTD_LSB (0x2 << 4) I2S 規格選択 10:LSB 詰め規格(右詰め)
SPI_I2SCFGR_I2SSTD_PCM (0x3 << 4) I2S 規格選択 11:PCM 規格
SPI_I2SCFGR_CKPOL (1U << SPI_I2SCFGR_CKPOL_BIT) CKPOL:定常状態クロック極性
SPI_I2SCFGR_CKPOL_LOW (0x0 << SPI_I2SCFGR_CKPOL_BIT) 0:I2S クロックの定常状態はローレベルです。
SPI_I2SCFGR_CKPOL_HIGH (0x1 << SPI_I2SCFGR_CKPOL_BIT) 1:I2S クロックの定常状態はハイレベルです。
SPI_I2SCFGR_DATLEN (0x3 << 1) DATLEN:転送されるデータ長
SPI_I2SCFGR_DATLEN_16_BIT (0x0 << 1) 00:16 ビットデータ長
SPI_I2SCFGR_DATLEN_24_BIT (0x1 << 1) 01:24 ビットデータ長
SPI_I2SCFGR_DATLEN_32_BIT (0x2 << 1) 10:32 ビットデータ長
SPI_I2SCFGR_CHLEN (1U << SPI_I2SCFGR_CHLEN_BIT) CHLEN:チャネル長
SPI_I2SCFGR_CHLEN_16_BIT (0x0 << SPI_I2SCFGR_CHLEN_BIT) 0:16 ビット幅
SPI_I2SCFGR_CHLEN_32_BIT (0x1 << SPI_I2SCFGR_CHLEN_BIT) 1:32 ビット幅
SPI_I2S プリスケーラレジスタ(SPI_I2SPR)
ビット番号
SPI_I2SPR_MCKOE_BIT [9] (rw) MCKOE:マスタクロック出力イネーブル
SPI_I2SPR_ODD_BIT [8] (rw) ODD:プリスケーラの奇除数
設定値・ビットマスク
SPI_I2SPR_MCKOE (1U << SPI_I2SPR_MCKOE_BIT) MCKOE:マスタクロック出力イネーブル
SPI_I2SPR_ODD (1U << SPI_I2SPR_ODD_BIT) ODD:プリスケーラの奇除数
SPI_I2SPR_I2SDIV 0xFF I2S リニアプリスケーラ
このドキュメントはleafLabs, LLC.が執筆し、たま吉が翻訳・一部加筆修正したものです。
NAVER、ヤフオク等の営利目的の記事転用、リンク貼りは禁止です。